package db

import (
	"fmt"
	"os"
	"github.com/astaxie/beego"
	_ "github.com/go-sql-driver/mysql"
	"github.com/go-xorm/core"
	"github.com/go-xorm/xorm"
)

var Mysql *xorm.Engine

func init () {
	// 创建数据库引擎
	var  err error
	Mysql, err = xorm.NewEngine("mysql", beego.AppConfig.String("DB::conn"))

	// 设置开启连接池的空闲数量
	Mysql.SetMaxIdleConns(1000)
	Mysql.SetMaxOpenConns(2000)
	if err != nil {
		fmt.Errorf(err.Error())
		os.Exit(1)
	}

	
	//测试是否连接
	err = Mysql.Ping()
	if err != nil {
		fmt.Errorf(err.Error())
		os.Exit(1)
	}
	
	// 设置名称映射规则
	Mysql.SetMapper(core.SnakeMapper{})

	// 设置缓存
	cacher := xorm.NewLRUCacher(xorm.NewMemoryStore(), 1000)
	Mysql.SetDefaultCacher(cacher)

	if beego.BConfig.RunMode == "dev" {
		Mysql.ShowSQL(true)
		Mysql.ShowExecTime(true)
	} else {
		Mysql.ShowSQL(false)
		Mysql.ShowExecTime(false)
	}

}